#coding=UTF-8
"""

统一返回json格式

    考虑把数据对象处理成字典, 在保存整个数据字典: goodMsg | badMsg
    if isinstance(data, JsonMsg):
        print data.__dict__
        pass
    return msgObj

"""


class JsonMsg:
    def __init__(self, code, msg):
        self.code = code
        self.msg = msg
        self.data = {}

    def pushData(self, key, value):
        self.data.__setitem__(key, value)
        return self

    def pushAll(self, dictObj):
        if not isinstance(dictObj, dict):
            raise Exception("Param: dictObj is not a dict")

        self.data.update(dictObj)
        return self

    def out(self):
        return self.__dict__



class MsgMaker:
    def __init__(self):
        pass

    @staticmethod
    def goodMsg(msg=None, data=None):
        if not msg:
            msg = "GOOD_QUERY"

        msgObj = JsonMsg(code="OK", msg=msg)
        if data:
            msgObj.pushAll(data)

        return msgObj

    @staticmethod
    def badMsg(msg=None):
        if not msg:
            msg = "BAD_QUERY"

        return JsonMsg(code="ERROR", msg=msg)

    @staticmethod
    def warnMsg(msg=None):
        if not msg:
            msg = "BAD_QUERY"

        return JsonMsg(code="WARNING", msg=msg)

    @staticmethod
    def authFailMsg(msg=None):
        if not msg:
            msg = "BAD_QUERY"

        return JsonMsg(code="AuthError", msg=msg)

    @staticmethod
    def feedNoExistMsg(msg=None):
        if not msg:
            msg = "BAD_QUERY"

        return JsonMsg(code="EmptyFeed", msg=msg)

    @staticmethod
    def banMsg():
        return JsonMsg(code="BanError", msg='您的帐号存在异常，请联系管理员微信：MKS_VH！')

